NexusPi Git Node
lib/microReticulum/src/Packet.h copilot/add-rtnode-configuration-options (9529fa8a) Text, 15.59 KB
Tff7b72#Tff7b72pragma once
Tff7b72#Tff7b72include T8b949e"Link.h"
Tff7b72#Tff7b72include T8b949e"Interface.h"
Tff7b72#Tff7b72include T8b949e"Destination.h"
Tff7b72#Tff7b72include T8b949e"Bytes.h"
Tff7b72#Tff7b72include T8b949e"Log.h"
Tff7b72#Tff7b72include T8b949e"Type.h"
Tff7b72#Tff7b72include T8b949e"Utilities/OS.h"
Tff7b72#Tff7b72include T8b949e<memory>
Tff7b72#Tff7b72include T8b949e<cassert>
Tff7b72#Tff7b72include T8b949e<stdint.h>
Tff7b72#Tff7b72include T8b949e<time.h>
Te6edf3namespace Te6edf3RNS Tb4b4b4{
Te6edf3class Te6edf3ProofDestinationTb4b4b4;
Te6edf3class Te6edf3PacketReceiptTb4b4b4;
Te6edf3class Te6edf3PacketTb4b4b4;
Te6edf3class Te6edf3ProofDestination Tff7b72: Te6edf3public Te6edf3Destination Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3ProofDestinationTb4b4b4(Tff7b72const Te6edf3PacketTff7b72& Te6edf3packetTb4b4b4)Tb4b4b4;
T8b949e// CBA Can't use virtual methods because they are lost in object copies
T8b949e//inline virtual const Bytes encrypt(const Bytes& data) {
T8b949e// return data;
T8b949e//}
Tb4b4b4}Tb4b4b4;
T8b949e/*
The PacketReceipt class is used to receive notifications about
:ref:`RNS.Packet<api-packet>` instances sent over the network. Instances
of this class are never created manually, but always returned from
the *send()* method of a :ref:`RNS.Packet<api-packet>` instance.
*/
Te6edf3class Te6edf3PacketReceipt Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3class Te6edf3Callbacks Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3using Te6edf3delivery Tff7b72= Tffa657voidTb4b4b4(Tff7b72*Tb4b4b4)Tb4b4b4(Tff7b72const Te6edf3PacketReceiptTff7b72& Te6edf3packet_receiptTb4b4b4)Tb4b4b4;
Te6edf3using Te6edf3timeout Tff7b72= Tffa657voidTb4b4b4(Tff7b72*Tb4b4b4)Tb4b4b4(Tff7b72const Te6edf3PacketReceiptTff7b72& Te6edf3packet_receiptTb4b4b4)Tb4b4b4;
Te6edf3publicTff7b72:
Te6edf3delivery Te6edf3_delivery Tff7b72= Tffa657nullptrTb4b4b4;
Te6edf3timeout Te6edf3_timeout Tff7b72= Tffa657nullptrTb4b4b4;
Te6edf3friend Te6edf3class Te6edf3PacketReceiptTb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3publicTff7b72:
Te6edf3PacketReceiptTb4b4b4(Tb4b4b4) Tff7b72: Te6edf3_objectTb4b4b4(Te6edf3new Te6edf3ObjectTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3PacketReceiptTb4b4b4(Te6edf3TypeTff7b72:Tff7b72:Te6edf3NoneConstructor Te6edf3noneTb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3PacketReceiptTb4b4b4(Tff7b72const Te6edf3PacketReceiptTff7b72& Te6edf3packet_receiptTb4b4b4) Tff7b72: Te6edf3_objectTb4b4b4(Te6edf3packet_receiptTb4b4b4.Te6edf3_objectTb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3PacketReceiptTb4b4b4(Tff7b72const Te6edf3PacketTff7b72& Te6edf3packetTb4b4b4)Tb4b4b4;
Tff7b72inline Te6edf3PacketReceiptTff7b72& Te6edf3operator Tff7b72= Tb4b4b4(Tff7b72const Te6edf3PacketReceiptTff7b72& Te6edf3packet_receiptTb4b4b4) Tb4b4b4{
Te6edf3_object Tff7b72= Te6edf3packet_receiptTb4b4b4.Te6edf3_objectTb4b4b4;
Tff7b72return Tff7b72*Te6edf3thisTb4b4b4;
Tb4b4b4}
Tff7b72inline Te6edf3operator Tffa657boolTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{
Tff7b72return Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72!Tff7b72= Tffa657nullptrTb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3operator Tff7b72< Tb4b4b4(Tff7b72const Te6edf3PacketReceiptTff7b72& Te6edf3packet_receiptTb4b4b4) Tff7b72const Tb4b4b4{
Tff7b72return Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72< Te6edf3packet_receiptTb4b4b4.Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3publicTff7b72:
Tffa657bool Te6edf3validate_proof_packetTb4b4b4(Tff7b72const Te6edf3PacketTff7b72& Te6edf3proof_packetTb4b4b4)Tb4b4b4;
T8b949e//bool validate_link_proof(const Bytes& proof, const Link& link, const Packet& proof_packet = {Type::NONE});
Tffa657bool Td2a8ffvalidate_link_proofTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3proofTb4b4b4, Tff7b72const Te6edf3LinkTff7b72& Te6edf3linkTb4b4b4)Tb4b4b4;
Tffa657bool Td2a8ffvalidate_link_proofTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3proofTb4b4b4, Tff7b72const Te6edf3LinkTff7b72& Te6edf3linkTb4b4b4, Tff7b72const Te6edf3PacketTff7b72& Te6edf3proof_packetTb4b4b4)Tb4b4b4;
T8b949e//bool validate_proof(const Bytes& proof, const Packet& proof_packet = {Type::NONE});
Tffa657bool Td2a8ffvalidate_proofTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3proofTb4b4b4)Tb4b4b4;
Tffa657bool Td2a8ffvalidate_proofTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3proofTb4b4b4, Tff7b72const Te6edf3PacketTff7b72& Te6edf3proof_packetTb4b4b4)Tb4b4b4;
Tff7b72inline Tffa657double Td2a8ffget_rttTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_concluded_at Tff7b72- Te6edf3_objectTff7b72-Tff7b72>Te6edf3_sent_atTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Td2a8ffis_timed_outTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Tb4b4b4(Tb4b4b4(Te6edf3_objectTff7b72-Tff7b72>Te6edf3_sent_at Tff7b72+ Te6edf3_objectTff7b72-Tff7b72>Te6edf3_timeoutTb4b4b4) Tff7b72< Te6edf3UtilitiesTff7b72:Tff7b72:Te6edf3OSTff7b72:Tff7b72:Te6edf3timeTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffcheck_timeoutTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// :param timeout: The timeout in seconds.
Tff7b72inline Tffa657void Td2a8ffset_timeoutTb4b4b4(Tffa657int16_t Te6edf3timeoutTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_timeout Tff7b72= Te6edf3timeoutTb4b4b4; Tb4b4b4}
T8b949e/*
Sets a function that gets called if a successfull delivery has been proven.
:param callback: A *callable* with the signature *callback(packet_receipt)*
*/
Tff7b72inline Tffa657void Td2a8ffset_delivery_callbackTb4b4b4(Te6edf3CallbacksTff7b72:Tff7b72:Te6edf3delivery Te6edf3callbackTb4b4b4) Tb4b4b4{
Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4;
Te6edf3_objectTff7b72-Tff7b72>Te6edf3_callbacksTb4b4b4.Te6edf3_delivery Tff7b72= Te6edf3callbackTb4b4b4;
Tb4b4b4}
T8b949e/*
Sets a function that gets called if the delivery times out.
:param callback: A *callable* with the signature *callback(packet_receipt)*
*/
Tff7b72inline Tffa657void Td2a8ffset_timeout_callbackTb4b4b4(Te6edf3CallbacksTff7b72:Tff7b72:Te6edf3timeout Te6edf3callbackTb4b4b4) Tb4b4b4{
Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4;
Te6edf3_objectTff7b72-Tff7b72>Te6edf3_callbacksTb4b4b4.Te6edf3_timeout Tff7b72= Te6edf3callbackTb4b4b4;
Tb4b4b4}
T8b949e// getters
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Td2a8ffhashTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_hashTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketReceiptTff7b72:Tff7b72:Te6edf3Status Td2a8ffstatusTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_statusTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Td2a8ffprovedTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_provedTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657double Td2a8ffconcluded_atTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_concluded_atTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Td2a8fftruncated_hashTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_truncated_hashTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3CallbacksTff7b72& Td2a8ffcallbacksTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_callbacksTb4b4b4; Tb4b4b4}
T8b949e// setters
Tff7b72inline Tffa657void Td2a8ffstatusTb4b4b4(Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketReceiptTff7b72:Tff7b72:Te6edf3Status Te6edf3statusTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_status Tff7b72= Te6edf3statusTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffprovedTb4b4b4(Tffa657bool Te6edf3provedTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_proved Tff7b72= Te6edf3provedTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffconcluded_atTb4b4b4(Tffa657double Te6edf3concluded_atTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_concluded_at Tff7b72= Te6edf3concluded_atTb4b4b4; Tb4b4b4}
Te6edf3privateTff7b72:
Te6edf3class Te6edf3Object Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3ObjectTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3virtual Tff7b72~Te6edf3ObjectTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3privateTff7b72:
Te6edf3Bytes Te6edf3_hashTb4b4b4;
Te6edf3Bytes Te6edf3_truncated_hashTb4b4b4;
Tffa657bool Te6edf3_sent Tff7b72= Tffa657trueTb4b4b4;
Tffa657double Te6edf3_sent_at Tff7b72= Te6edf3UtilitiesTff7b72:Tff7b72:Te6edf3OSTff7b72:Tff7b72:Te6edf3timeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657bool Te6edf3_proved Tff7b72= Tffa657falseTb4b4b4;
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketReceiptTff7b72:Tff7b72:Te6edf3Status Te6edf3_status Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketReceiptTff7b72:Tff7b72:Te6edf3SENTTb4b4b4;
Te6edf3Destination Te6edf3_destination Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4;
Te6edf3Callbacks Te6edf3_callbacksTb4b4b4;
Tffa657double Te6edf3_concluded_at Tff7b72= T79c0ff0Tb4b4b4;
T8b949e// CBA TODO This shoujld almost certainly not be a reference but we have an issue with circular dependency between Packet and PacketReceipt
T8b949e//Packet _proof_packet = {Type::NONE};
Tffa657int16_t Te6edf3_timeout Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3friend Te6edf3class Te6edf3PacketReceiptTb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3stdTff7b72:Tff7b72:Te6edf3shared_ptrTff7b72<Te6edf3ObjectTff7b72> Te6edf3_objectTb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3class Te6edf3Packet Tb4b4b4{
Te6edf3publicTff7b72:
T8b949e//static constexpr const uint8_t EMPTY_DESTINATION[Type::Reticulum::DESTINATION_LENGTH] = {0};
Tffa657uint8_t Te6edf3EMPTY_DESTINATIONTb4b4b4[Te6edf3TypeTff7b72:Tff7b72:Te6edf3ReticulumTff7b72:Tff7b72:Te6edf3DESTINATION_LENGTHTb4b4b4] Tff7b72= Tb4b4b4{T79c0ff0Tb4b4b4}Tb4b4b4;
Te6edf3publicTff7b72:
Te6edf3PacketTb4b4b4(Te6edf3TypeTff7b72:Tff7b72:Te6edf3NoneConstructor Te6edf3noneTb4b4b4) Tb4b4b4{
Te6edf3MEMTb4b4b4(Ta5d6ff"Ta5d6ffPacket NONE object created, this: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3thisTb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff, data: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3PacketTb4b4b4(Tff7b72const Te6edf3PacketTff7b72& Te6edf3packetTb4b4b4) Tff7b72: Te6edf3_objectTb4b4b4(Te6edf3packetTb4b4b4.Te6edf3_objectTb4b4b4) Tb4b4b4{
Te6edf3MEMTb4b4b4(Ta5d6ff"Ta5d6ffPacket object copy created, this: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3thisTb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff, data: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3PacketTb4b4b4(
Tff7b72const Te6edf3DestinationTff7b72& Te6edf3destinationTb4b4b4,
Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3attached_interfaceTb4b4b4,
Tff7b72const Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3types Te6edf3packet_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3DATATb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_types Te6edf3context Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3CONTEXT_NONETb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3TransportTff7b72:Tff7b72:Te6edf3types Te6edf3transport_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3TransportTff7b72:Tff7b72:Te6edf3BROADCASTTb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3header_types Te6edf3header_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3HEADER_1Tb4b4b4,
Tff7b72const Te6edf3BytesTff7b72& Te6edf3transport_id Tff7b72= Tb4b4b4{Te6edf3BytesTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4,
Tffa657bool Te6edf3create_receipt Tff7b72= Tffa657trueTb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_flags Te6edf3context_flag Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3FLAG_UNSET
Tb4b4b4)Tb4b4b4;
Te6edf3PacketTb4b4b4(
Tff7b72const Te6edf3DestinationTff7b72& Te6edf3destinationTb4b4b4,
Tff7b72const Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3types Te6edf3packet_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3DATATb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_types Te6edf3context Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3CONTEXT_NONETb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3TransportTff7b72:Tff7b72:Te6edf3types Te6edf3transport_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3TransportTff7b72:Tff7b72:Te6edf3BROADCASTTb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3header_types Te6edf3header_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3HEADER_1Tb4b4b4,
Tff7b72const Te6edf3BytesTff7b72& Te6edf3transport_id Tff7b72= Tb4b4b4{Te6edf3BytesTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4,
Tffa657bool Te6edf3create_receipt Tff7b72= Tffa657trueTb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_flags Te6edf3context_flag Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3FLAG_UNSET
Tb4b4b4) Tff7b72: Te6edf3PacketTb4b4b4(Te6edf3destinationTb4b4b4, Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4, Te6edf3dataTb4b4b4, Te6edf3packet_typeTb4b4b4, Te6edf3contextTb4b4b4, Te6edf3transport_typeTb4b4b4, Te6edf3header_typeTb4b4b4, Te6edf3transport_idTb4b4b4, Te6edf3create_receiptTb4b4b4, Te6edf3context_flagTb4b4b4) Tb4b4b4{Tb4b4b4}
T8b949e// CBA LINK
Te6edf3PacketTb4b4b4(
Tff7b72const Te6edf3LinkTff7b72& Te6edf3linkTb4b4b4,
Tff7b72const Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3types Te6edf3packet_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3DATATb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_types Te6edf3context Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3CONTEXT_NONETb4b4b4,
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_flags Te6edf3context_flag Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3FLAG_UNSET
Tb4b4b4)Tb4b4b4;
Te6edf3virtual Tff7b72~Te6edf3PacketTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3MEMTb4b4b4(Ta5d6ff"Ta5d6ffPacket object destroyed, this: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3thisTb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff, data: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Te6edf3PacketTff7b72& Te6edf3operator Tff7b72= Tb4b4b4(Tff7b72const Te6edf3PacketTff7b72& Te6edf3packetTb4b4b4) Tb4b4b4{
Te6edf3_object Tff7b72= Te6edf3packetTb4b4b4.Te6edf3_objectTb4b4b4;
Te6edf3MEMTb4b4b4(Ta5d6ff"Ta5d6ffPacket object copy created by assignment, this: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3thisTb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff, data: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72*Te6edf3thisTb4b4b4;
Tb4b4b4}
Tff7b72inline Te6edf3operator Tffa657boolTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{
Tff7b72return Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72!Tff7b72= Tffa657nullptrTb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3operator Tff7b72< Tb4b4b4(Tff7b72const Te6edf3PacketTff7b72& Te6edf3packetTb4b4b4) Tff7b72const Tb4b4b4{
Tff7b72return Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72< Te6edf3packetTb4b4b4.Te6edf3_objectTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3privateTff7b72:
T8b949e/*
void setTransportId(const uint8_t* transport_id);
void setHeader(const uint8_t* header);
void setRaw(const uint8_t* raw, uint16_t len);
void setData(const uint8_t* rata, uint16_t len);
*/
Te6edf3publicTff7b72:
Tffa657uint8_t Te6edf3get_packed_flagsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffunpack_flagsTb4b4b4(Tffa657uint8_t Te6edf3flagsTb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffpackTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657bool Td2a8ffunpackTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3PacketReceipt Td2a8ffsendTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657bool Td2a8ffresendTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffproveTb4b4b4(Tff7b72const Te6edf3DestinationTff7b72& Te6edf3destination Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ProofDestination Td2a8ffgenerate_proof_destinationTb4b4b4(Tb4b4b4) Tff7b72constTb4b4b4;
Tffa657bool Td2a8ffvalidate_proof_packetTb4b4b4(Tff7b72const Te6edf3PacketTff7b72& Te6edf3proof_packetTb4b4b4)Tb4b4b4;
Tffa657bool Td2a8ffvalidate_proofTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3proofTb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffupdate_hashTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3Bytes Td2a8ffget_hashTb4b4b4(Tb4b4b4) Tff7b72constTb4b4b4;
Tff7b72const Te6edf3Bytes Td2a8ffgetTruncatedHashTb4b4b4(Tb4b4b4) Tff7b72constTb4b4b4;
Tff7b72const Te6edf3Bytes Td2a8ffget_hashable_partTb4b4b4(Tb4b4b4) Tff7b72constTb4b4b4;
Tff7b72inline Te6edf3stdTff7b72:Tff7b72:Te6edf3string Td2a8fftoStringTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72if Tb4b4b4(Tff7b72!Te6edf3_objectTb4b4b4) Tff7b72return Ta5d6ff"Ta5d6ff"Tb4b4b4; Tff7b72return Ta5d6ff"Ta5d6ff{Packet:Ta5d6ff" Tff7b72+ Te6edf3_objectTff7b72-Tff7b72>Te6edf3_packet_hashTb4b4b4.Te6edf3toHexTb4b4b4(Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff}Ta5d6ff"Tb4b4b4; Tb4b4b4}
T8b949e// getters
Tff7b72inline Tff7b72const Te6edf3DestinationTff7b72& Td2a8ffdestinationTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_destinationTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3LinkTff7b72& Td2a8fflinkTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_linkTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3InterfaceTff7b72& Td2a8ffattached_interfaceTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_attached_interfaceTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3InterfaceTff7b72& Td2a8ffreceiving_interfaceTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_receiving_interfaceTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3header_types Td2a8ffheader_typeTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_header_typeTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_flags Td2a8ffcontext_flagTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_context_flagTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3TypeTff7b72:Tff7b72:Te6edf3TransportTff7b72:Tff7b72:Te6edf3types Td2a8fftransport_typeTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_transport_typeTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3TypeTff7b72:Tff7b72:Te6edf3DestinationTff7b72:Tff7b72:Te6edf3types Td2a8ffdestination_typeTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_destination_typeTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3types Td2a8ffpacket_typeTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_packet_typeTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_types Td2a8ffcontextTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_contextTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Td2a8ffsentTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_sentTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657double Td2a8ffsent_atTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_sent_atTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Td2a8ffcreate_receiptTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_create_receiptTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3PacketReceiptTff7b72& Td2a8ffreceiptTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_receiptTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657uint8_t Td2a8ffflagsTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_flagsTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657uint8_t Td2a8ffhopsTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_hopsTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Td2a8ffcachedTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_cachedTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Td2a8ffpacket_hashTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_packet_hashTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Td2a8ffdestination_hashTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_destination_hashTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Td2a8fftransport_idTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_transport_idTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Td2a8ffrawTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_rawTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Td2a8ffdataTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_dataTb4b4b4; Tb4b4b4}
T8b949e// CBA LINK
Tff7b72inline Tff7b72const Te6edf3LinkTff7b72& Td2a8ffdestination_linkTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_destination_linkTb4b4b4; Tb4b4b4}
T8b949e//CBA Following method is only used by Resource to access decrypted resource advertisement form Link. Consider a better way.
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Td2a8ffplaintextTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_objectTff7b72-Tff7b72>Te6edf3_plaintextTb4b4b4; Tb4b4b4}
T8b949e// setters
Tff7b72inline Tffa657void Td2a8ffdestinationTb4b4b4(Tff7b72const Te6edf3DestinationTff7b72& Te6edf3destinationTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_destination Tff7b72= Te6edf3destinationTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8fflinkTb4b4b4(Tff7b72const Te6edf3LinkTff7b72& Te6edf3linkTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_link Tff7b72= Te6edf3linkTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffreceiving_interfaceTb4b4b4(Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3receiving_interfaceTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_receiving_interface Tff7b72= Te6edf3receiving_interfaceTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffsentTb4b4b4(Tffa657bool Te6edf3sentTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_sent Tff7b72= Te6edf3sentTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffsent_atTb4b4b4(Tffa657double Te6edf3sent_atTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_sent_at Tff7b72= Te6edf3sent_atTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffreceiptTb4b4b4(Tff7b72const Te6edf3PacketReceiptTff7b72& Te6edf3receiptTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_receipt Tff7b72= Te6edf3receiptTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffhopsTb4b4b4(Tffa657uint8_t Te6edf3hopsTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_hops Tff7b72= Te6edf3hopsTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffcachedTb4b4b4(Tffa657bool Te6edf3cachedTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_cached Tff7b72= Te6edf3cachedTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8fftransport_idTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3transport_idTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_transport_id Tff7b72= Te6edf3transport_idTb4b4b4; Tb4b4b4}
T8b949e//CBA Following method is only used by Link to provide Resource access to decrypted resource advertisement. Consider a better way.
Tff7b72inline Tffa657void Td2a8ffplaintextTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3plaintextTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_objectTb4b4b4)Tb4b4b4; Te6edf3_objectTff7b72-Tff7b72>Te6edf3_plaintext Tff7b72= Te6edf3plaintextTb4b4b4; Tb4b4b4}
Tff7b72#Tff7b72ifndef NDEBUG
Te6edf3stdTff7b72:Tff7b72:Te6edf3string Td2a8ffdebugStringTb4b4b4(Tb4b4b4) Tff7b72constTb4b4b4;
Te6edf3stdTff7b72:Tff7b72:Te6edf3string Td2a8ffdumpStringTb4b4b4(Tb4b4b4) Tff7b72constTb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3privateTff7b72:
Te6edf3class Te6edf3Object Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3ObjectTb4b4b4(Tff7b72const Te6edf3DestinationTff7b72& Te6edf3destinationTb4b4b4, Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3attached_interfaceTb4b4b4) Tff7b72: Te6edf3_destinationTb4b4b4(Te6edf3destinationTb4b4b4)Tb4b4b4, Te6edf3_attached_interfaceTb4b4b4(Te6edf3attached_interfaceTb4b4b4) Tb4b4b4{ Te6edf3MEMTb4b4b4(Ta5d6ff"Ta5d6ffPacket::Data object created, this: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3thisTb4b4b4)Tb4b4b4)Tb4b4b4; Tb4b4b4}
T8b949e// CBA LINK
T8b949e//Object(const Destination& destination, const Link& destination_link) : _destination(destination), _destination_link(destination_link) { MEM("Packet::Data object created, this: " + std::to_string((uintptr_t)this)); }
T8b949e//Object(const Link& link) : _destination(link.destination()), _destination_link(link) { MEM("Packet::Data object created, this: " + std::to_string((uintptr_t)this)); }
Te6edf3virtual Tff7b72~Te6edf3ObjectTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3MEMTb4b4b4(Ta5d6ff"Ta5d6ffPacket::Data object destroyed, this: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3thisTb4b4b4)Tb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3privateTff7b72:
Te6edf3Destination Te6edf3_destination Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4;
T8b949e// CBA LINK
T8b949e// CBA TODO: Determine if _link (assigned late by Transport) and _destination_link (assigned in constructor) can be one and the same !!!
Te6edf3Link Te6edf3_destination_link Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4;
Te6edf3Link Te6edf3_link Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4;
Te6edf3Interface Te6edf3_attached_interface Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4;
Te6edf3Interface Te6edf3_receiving_interface Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4;
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3header_types Te6edf3_header_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3HEADER_1Tb4b4b4;
Te6edf3TypeTff7b72:Tff7b72:Te6edf3TransportTff7b72:Tff7b72:Te6edf3types Te6edf3_transport_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3TransportTff7b72:Tff7b72:Te6edf3BROADCASTTb4b4b4;
Te6edf3TypeTff7b72:Tff7b72:Te6edf3DestinationTff7b72:Tff7b72:Te6edf3types Te6edf3_destination_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3DestinationTff7b72:Tff7b72:Te6edf3SINGLETb4b4b4;
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3types Te6edf3_packet_type Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3DATATb4b4b4;
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_types Te6edf3_context Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3CONTEXT_NONETb4b4b4;
Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3context_flags Te6edf3_context_flag Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3PacketTff7b72:Tff7b72:Te6edf3FLAG_UNSETTb4b4b4;
Tffa657uint8_t Te6edf3_flags Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3_hops Tff7b72= T79c0ff0Tb4b4b4;
Tffa657bool Te6edf3_packed Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_sent Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_create_receipt Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_fromPacked Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_truncated Tff7b72= Tffa657falseTb4b4b4; T8b949e// whether data was truncated
Tffa657bool Te6edf3_encrypted Tff7b72= Tffa657falseTb4b4b4; T8b949e// whether data is encrypted
Tffa657bool Te6edf3_cached Tff7b72= Tffa657falseTb4b4b4; T8b949e// whether packet has been cached
Te6edf3PacketReceipt Te6edf3_receipt Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4;
Tffa657uint16_t Te6edf3_MTU Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3ReticulumTff7b72:Tff7b72:Te6edf3MTUTb4b4b4;
Tffa657double Te6edf3_sent_at Tff7b72= T79c0ff0Tb4b4b4;
Tffa657float Te6edf3_rssi Tff7b72= T79c0ff0.0Tb4b4b4;
Tffa657float Te6edf3_snr Tff7b72= T79c0ff0.0Tb4b4b4;
Tffa657float Te6edf3_q Tff7b72= T79c0ff0.0Tb4b4b4;
Te6edf3Bytes Te6edf3_packet_hashTb4b4b4;
Te6edf3Bytes Te6edf3_ratchet_idTb4b4b4;
Te6edf3Bytes Te6edf3_destination_hashTb4b4b4;
Te6edf3Bytes Te6edf3_transport_idTb4b4b4;
Te6edf3Bytes Te6edf3_rawTb4b4b4; T8b949e// header + ( plaintext | ciphertext-token )
Te6edf3Bytes Te6edf3_dataTb4b4b4; T8b949e// plaintext | ciphertext
Te6edf3Bytes Te6edf3_plaintextTb4b4b4; T8b949e// used exclusively to relay decrypted resource advertisement form Link to Resource
Te6edf3Bytes Te6edf3_headerTb4b4b4;
Te6edf3Bytes Te6edf3_ciphertextTb4b4b4;
Te6edf3friend Te6edf3class Te6edf3PacketTb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3stdTff7b72:Tff7b72:Te6edf3shared_ptrTff7b72<Te6edf3ObjectTff7b72> Te6edf3_objectTb4b4b4;
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
T8b949e/*
namespace ArduinoJson {
inline bool convertToJson(const RNS::Packet& src, JsonVariant dst) {
if (!src) {
return dst.set(nullptr);
}
return dst.set(src.get_hash().toHex());
}
void convertFromJson(JsonVariantConst src, RNS::Packet& dst);
inline bool canConvertFromJson(JsonVariantConst src, const RNS::Packet&) {
return src.is<const char*>() && strlen(src.as<const char*>()) == 64;
}
}
*/
T8b949e/*
namespace ArduinoJson {
template <>
struct Converter<RNS::Packet> {
static bool toJson(const RNS::Packet& src, JsonVariant dst) {
if (!src) {
return dst.set(nullptr);
}
TRACE("<<< Serializing packet hash " + src.get_hash().toHex());
return dst.set(src.get_hash().toHex());
}
static RNS::Packet fromJson(JsonVariantConst src) {
if (!src.isNull()) {
RNS::Bytes hash;
hash.assignHex(src.as<const char*>());
TRACE(">>> Deserialized packet hash " + hash.toHex());
TRACE(">>> Querying transport for cached packet");
// Query transport for matching interface
return RNS::Packet::get_cached_packet(hash);
}
else {
return {RNS::Type::NONE};
}
}
static bool checkJson(JsonVariantConst src) {
return src.is<const char*>() && strlen(src.as<const char*>()) == 64;
}
};
}
*/
Served by rngit 1.4.2 - Generated in 0.07s